package com.lcf.framework.utils.oss;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * oss
 *
 * @author lcf
 */
public interface IOssUtils {
    /**
     * 上传图片
     *
     * @param file       文件
     * @param path       相对路径
     * @param isCompress 是否压缩
     */
    String uploadImg(String path, MultipartFile file, boolean isCompress);

    /**
     * 上传图片
     *
     * @param path       相对路径
     * @param isCompress 是否压缩
     */
    String uploadImg(String path, InputStream inputStream, boolean isCompress);

    /**
     * 上传图片
     *
     * @param url        文件url
     * @param path       相对路径
     * @param isCompress 是否压缩
     */
    String uploadImg(String path, String url, boolean isCompress);

    /**
     * 更新图片
     *
     * @param inputStream 图片流
     * @param oldName     旧图片名
     */
    String updateImg(String bucket, InputStream inputStream, String oldName, boolean isCompress);

    /**
     * 更新图片
     *
     * @param file    图片
     * @param oldName 旧图片名
     */
    String updateImg(String bucket, MultipartFile file, String oldName, boolean isCompress);

    /**
     * 更新图片
     *
     * @param fileUrl 新图片路径
     * @param oldName 旧图片名
     */
    String updateImg(String bucket, String fileUrl, String oldName, boolean isCompress);

    /**
     * 上传文件
     *
     * @param file 文件
     * @param path 相对路径
     */
    String uploadFile(String path, MultipartFile file);

    /**
     * 上传文件
     *
     * @param url  文件url
     * @param path 相对路径
     */
    String uploadFile(String path, String url);

    /**
     * 更新文件
     *
     * @param inputStream 文件流
     * @param oldName     旧文件名
     */
    String updateFile(String bucket, InputStream inputStream, String oldName);

    /**
     * 更新文件
     *
     * @param file    文件
     * @param oldName 旧文件名
     */
    String updateFile(String bucket, MultipartFile file, String oldName);

    /**
     * 更新文件
     *
     * @param fileUrl 新文件路径
     * @param oldName 旧文件名
     */
    String updateFile(String bucket, String fileUrl, String oldName);
    /**
     * 删除文件
     */
    void delFile(String bucket, String fileUrl);

    /**
     * 获取文件绝对路径
     */
    String getAbsoluteUrl(String fileName);

    /**
     * 获取文件相对路径
     */
    String getRelativeUrl(String url);

    /**
     * 获取文件大小
     */
    Long getFileSize(String fileName);
}
